const Koa = require('koa');
const fs = require('fs-extra');

// 导入配置和模块
const config = require('./config');
const middleware = require('./middleware');
const routes = require('./routes');
const { getLocalIP } = require('./utils');

const app = new Koa();

// 信任代理设置，有助于正确处理网络请求
app.proxy = true;

// 确保存储目录存在
fs.ensureDirSync(config.storage.path);

// 应用中间件
app.use(middleware.errorHandler);
app.use(middleware.corsMiddleware);
app.use(middleware.bodyParser);
app.use(middleware.staticServe);

// 应用路由
app.use(routes.routes()).use(routes.allowedMethods());

// 启动服务器
const { port, host } = config.server;

app.listen(port, host, () => {
  console.log(`🚀 FileHive 文件共享服务器启动成功！`);
  console.log(`📦 架构模式: 模块化`);
  console.log(`🔒 监听地址: 仅限本地 (${host}:${port})`);
  console.log(`🌐 访问地址:`);
  console.log(`   - 本地访问: http://localhost:${port}`);
  console.log(`   - 本地访问: http://127.0.0.1:${port}`);
  console.log(`📂 共享目录: ${config.storage.path}`);
  console.log(`🎯 前端服务: http://localhost:5173`);
  console.log(`⏰ 启动时间: ${new Date().toLocaleString('zh-CN')}`);
  console.log(`\n🔐 网络配置:`);
  console.log(`   ✅ 服务器仅监听 127.0.0.1`);
  console.log(`   ✅ CORS允许所有来源`);
  console.log(`   ℹ️  只有能访问127.0.0.1的请求才能到达服务器`);
  console.log(`\n📋 API端点:`);
  console.log(`   GET  /api/files       - 获取文件列表`);
  console.log(`   POST /api/upload      - 上传文件`);
  console.log(`   POST /api/folder      - 创建文件夹`);
  console.log(`   DELETE /api/files     - 删除文件`);
  console.log(`   GET  /api/download    - 下载文件`);
  console.log(`   PUT  /api/move        - 移动/重命名`);
  console.log(`   GET  /api/info        - 文件信息`);
});

module.exports = app;